package org.ivwsqii.composite;

import java.util.ArrayList;
import java.util.List;

/**
 * 　	树枝构件角色类
 * @author wyl
 *	2019年3月30日
 */
public class Composite extends Component{
	/**
	 * 	用来存储组合对象中包含的子组件对象
	 */
	private List<Component> list = new ArrayList<>();

	private String name;

	public Composite(String name) {
		this.name = name;
	}


	@Override
	public void addChild(Component component) {
		list.add(component);
	}

	@Override
	public void removeChild(int index) {
		list.remove(index);
	}

	@Override
	public List<Component> getChild() {
		return list;
	}

	@Override
	public void printStruts(String preStr) {

		System.out.print(name+"/"+preStr);
		//如果还包含有子组件，那么就输出这些子组件对象
		if (list != null && !list.isEmpty()) {
			preStr += "/";
			for (Component component : list) {
				component.printStruts(preStr);
			}
		}
	}


}
